基于HMM-GMM的语音识别算法介绍
语音识别(Automatic Speech Recognition)简称为ASR,任务就是将语音转换成文本,解决的是机器的听清问题,同时可以处理部分声学和语言上的混淆,例如:“帮我拿快递”和“帮我拿块地”,成熟的ASR系统需要解决不同说话人之间的差异性。ASR不解决说话人身份问题(声纹识别),也不解决机器的听懂问题(自然语言理解)。
二、HMM-GMM语音识别系统
1. 系统总览
2. 声学特征提取
对于一段音频,计算声学特征的流程如上图所示,首先经过预加重,提升高频部分能量,然后经过分帧加窗,将一段音频分为多帧再进行离散傅里叶变换,这样我们是对各帧进行频率分析而不是整体音频。进行傅里叶变换之后,还要通过梅尔滤波器的滤波,然后就得到了Fbank声学特征。MFCC特征则需要进一步的离散余弦变换得到。总的来看,一段音频经过处理之后,得到了一系列的向量,便是声学特征序列。
3. 声学模型
3.1 建模单元与HMM-GMM
语音识别的建模单元为音素,音素是发音的基本单元。在系统中使用发音词典,来记录词到音素的映射,如下所示为0-9数字到音素的映射:
在语音识别中,我们使用三状态的HMM模型来对一个音素建模,每个状态的发射概率用GMM(高斯混合模型)来描述:
3.2 单音素与三音素模型
单音素模型是不考虑音素的上下文,对单个音素进行建模。比如对于词“复产”,其对应的音素序列为:f u4 ch an3;对于词“复兴”,其对应的音素序列为:f u4 x ing1。如果使用单音素建模的方式,这两个词中的“u4”这个音素,是用同一个HMM-GMM模型建模的。
三音素模型是指对于一个音素,考虑其所处的上下文,前/后各一个音素,如果上下文音素不同,则即使中间音素相同,也是属于不同的三音素模型。在上面的例子中,“复产”中的“u4”的三音素形式为“f-u4+ch”,表示其左边是“f”音素,右边是“ch”音素。而“复兴”中的“u4”的三音素形式为“f-u4+x”。这两个是不同的三音素模型,因此要用两个不同的HMM-GMM来建模。
单音素建模的缺点是,建模单元数少,以及不符合现实,即实际上一个音素的发音,是会受到其前后音素的影响的。因此实际的语音识别系统最终会采用三音素建模的形式,三音素建模虽然避免了前面说的问题,但同时也产生了新的问题,就是建模单元数会暴涨,例如中文音素总共有200多个,理论上三音素模型数为200的三次方就是八百万个,会有很多三音素模型没有可用的训练数据。
3.3 三音素参数共享
三音素模型带来的问题就是并不是所有的三音素模型都有对应的训练数据可以评估参数,目前采用的办法为决策树绑定。就是利用语言学家构建的问题,来对中间音素相同,上下文不同的音素进行分组,最终分到同一叶子结点的三音素状态,共享同一套GMM参数。如图:
4. 语言模型
4.1 语言模型的统计定义
一个统计语言模型包含有限集合 V,和一个函数 𝑝(𝑥1,𝑥2,…,𝑥𝑛)。那么对于任意𝑥1,𝑥2,…,𝑥𝑛∈𝑣+,模型都可以给出一个概率𝑝 (𝑥1,𝑥2,…,𝑥𝑛)≥0
4.2 统计语言模型的作用
在语音识别中,给定一个词序列,预测出下一个最能出现的词语,或者是出现在此序列后出现某个词的概率。
4.3 N-gram
一般我们会使用3-gram语音模型,即用前两个词作为历史,估计当前词。比如:
P(晴朗|你,知道,今天,天气) = P(晴朗|今天,天气)
5. 解码器
5.1 概述
解码器的作用是,在指定的搜索空间内,搜索所有的文字序列,同时使用声学模型和语言模型来对声学特征序列和文字序列进行声学以及语言上的打分,然后得分最高的序列即是解码所得的文字序列。
5.2 viterbi解码算法示例
解码器实际的工程实现要用wfst来表示,实际的解码算法也会比上面提到的要有更多的细节,但是主体的思想是一样的。解码算法的工程实现会在以后进行分享。
5.3 WFST解码器
WFST是Weighted Finite-State Transducers,是一种表示形式。我们的声学模型、语音模型、发音词典都可以表示成为WFST的形式。然后使用WFST的合并、最小化等算法,最终形成一张大的解码图。这张解码图的输入为三音素序列(kaldi中为transition-id),输出为词序列。因此整个解码过程都是在这张大的解码图中进行跑分的。在每一步解码时,并不是保留最佳路径,而是同时保留多条优势路径。这里会用到剪枝算法来保留多条优势路径,并去掉打分较低的路径。一般会同时用到两种剪枝算法:histogram pruning和beam pruning,此处不再赘述。
三、chain model简介
1. chain model综述
2. chain model特点
特点之一是使用单状态的HMM,而不是三状态的HMM来对音素建模:
特点之二是由于HMM拓扑结构的改变,对于TDNN网络的输出进行隔三帧采样:
特点之三是区分性训练的策略,区分性训练使用的优化函数更趋近于语音识别的任务衡量指标。并且chain model和普通的区分性训练也是有区别的,是一种Lattice-freeMMI的训练,这里不再展开讲了。
3. chain model训练流程
同样需要进行单音素三音素训练,来对训练文本进行更好的对齐。Chain Prepare的阶段,也是要利用训练数据的对齐文本,Lattice-freeMMI阶段便是TDNN网络的训练阶段。其他语言模型和解码器算法都同之前的一致。
欢迎关注AI Lab微信公众号:58AILab
欢迎加入58 AI Lab技术交流社区
欢迎加入58 AI Lab
团队照片
部门年会
部门篮球赛